// pages/pro_list/pro_list.js
var app = getApp();
var utils = require('../../utils/shop/formatShop.js');

/**   
 * 需要一个目标日期，初始化时，先得出到当前时间还有剩余多少秒  
 * 1.将秒数换成格式化输出为XX天XX小时XX分钟XX秒 XX  
 * 2.提供一个时钟，每1000ms运行一次，渲染时钟，再总ms数自减1000  
 * 3.剩余的秒次为零时，return，给出tips提示说，已经截止  
 */

// 定义一个总毫秒数，以一天为例  
//var total_micro_second = 3600 * 1000 * 24;//这是一天倒计时
// var total_micro_second = 10 * 1000;//这是10秒倒计时  

/* 毫秒级秒杀倒计时 */
function countdown(that, total_micro_second) {
  that.setData({
    minTime: 1
  });
  // 渲染倒计时时钟  
  that.setData({
    clock: dateformat(that, total_micro_second) //格式化时间  
  });
  dateformat(that, total_micro_second) //格式化时间

  if (total_micro_second <= 0) {
    that.setData({
      clock: "秒杀结束"
    });
    that.setData({
      minTime: -1
    });
    // timeout则跳出递归  
    return;
  }

  //settimeout实现倒计时效果  
  setTimeout(function() {
    // 放在最后--  
    total_micro_second -= 1000;
    countdown(that, total_micro_second);
  }, 1000) //注意毫秒的步长受限于系统的时间频率，于是我们精确到0.01s即10ms  
}

// 时间格式化输出，如1天天23时时12分分12秒秒12 。每10ms都会调用一次  
function dateformat(that, micro_second) {
  // 总秒数  
  var second = Math.floor(micro_second / 1000);
  // 天数  
  var day = Math.floor(second / 3600 / 24);
  // 总小时  
  var hr = Math.floor(second / 3600);
  // 小时位  
  var hr2 = hr % 24;
  // 分钟位  
  var min = Math.floor((second - hr * 3600) / 60);
  // 秒位  
  var sec = (second - hr * 3600 - min * 60);
  // equal to => var sec = second % 60;  
  that.setData({
    day: day
  });
  that.setData({
    hour: hr2
  });
  that.setData({
    minute: min
  });
  that.setData({
    second: sec
  });
  return day + ":" + hr2 + ":" + min + ":" + sec;
  // 毫秒位，保留2位  
  //var micro_sec = Math.floor((micro_second % 1000) / 10);
  //return day + "天" + hr2 + ":" + min + ":" + sec + ":" + micro_sec;
}

Page({

  /**
   * 页面的初始数据
   */
  data: {
    navbar: [],
    clock: '',
    currentTab: 0,

    ActArgs: {
      act: 'get_active',
      Type_ID: ''
    },
    active_img: '',

    CateArgs: {
      act: 'pro_cate',
      first_cate: 1
    },
    getProArgs: {
      page: 1,
      pageSize: 10,
      Cate_ID: 0,
      Is_Hot: '',
      Is_Spe: '',
      super_team: '',
      flashsale_flag: '', // 是否参与限时抢购。
      act: 'get_pro',
      Products_Name: '', //待搜索的内容
    },
    CateProducts: [],
    //请求状态
    get_flag: true,
    //加载更多动画
    loading: true
  },

  //获取二级分类
  getChildCate: function() {
    app.http_req(this.data.CateArgs, app.globalData.init.api_url, 'POST', this.ChildCate);
  },

  //二级分类回调
  ChildCate: function(res) {
    if (res.errorCode == 0) {
      var data = res.data;

      var navbar = this.data.navbar ? this.data.navbar : [];
      for (var i in data) {
        data[i]['Category_Head_Img'] = data[i]['Category_Head_Img'] != 'undefined' && data[i]['Category_Head_Img'] != '' ? utils.img_path(app.globalData.init.front_url, data[i]['Category_Head_Img']) : '../../images/no_pic.png';
        for (var j in data[i].child) {
          data[i].child[j]['Category_Head_Img'] = data[i].child[j]['Category_Head_Img'] != 'undefined' && data[i].child[j]['Category_Head_Img'] != '' ? utils.img_path(app.globalData.init.front_url, data[i].child[j]['Category_Head_Img']) : '../../images/no_pic.png';
        }
      }
      this.setData({
        navbar: data
      })
    } else {
      app.getError(res.errorCode, res.msg);
    }
  },

  //点击搜索时候,搜索相关产品、虚拟键盘完成
  search_pro: function(e) {
    var keyword = (typeof e.detail.value == 'object') ? e.detail.value.keyword : e.detail.value;
    //重置产品信息并设置搜索参数
    this.setData({
      CateProducts: [],
      'getProArgs.Products_Name': keyword,
      'getProArgs.page': 1,
      get_flag: true
    });
    //查询产品
    this.getCateProducts();
  },

  //获取分类商品
  getCateProducts: function() {
    this.setData({
      loading: true
    });
    app.http_req(this.data.getProArgs, app.globalData.init.api_url, 'POST', res => {
      if (res.errorCode === 0) {
        //格式化成为前端方便展示的产品格式
        var old_productsList = this.data.CateProducts;
        var productsList = utils.formatShop(app.globalData.init.front_url, res.data);
        this.setData({
          CateProducts: old_productsList.concat(productsList),
          'getProArgs.page': this.data.getProArgs.page + 1,
          get_flag: (res.totalCount / this.data.getProArgs.pageSize) > this.data.getProArgs.page ? true : false
        });
      } else if (res.errorCode == 2) { //无产品
        this.setData({
          CateProducts: [],
          get_flag: false
        });
      } else {
        wx.showModal({
          title: '提示',
          content: typeof res.msg !== 'undefined' ? res.msg : '查询产品失败',
          showCancel: false
        })
      }

      this.setData({
        loading: false
      });

      // 结束下拉刷新
      utils.overPullDownRefresh();
    });
  },

  //产品图片请求错误是显示默认图片
  show_default_proImg: function(e) {
    var proid = e.currentTarget.dataset.proid;
    this.setData({
      CateProducts: utils.show_default_proImg(this.data.CateProducts, proid)
    });
  },

  //获取限时抢购
  getActive: function() {
    app.http_req(this.data.ActArgs, app.globalData.init.api_url, 'POST', this.Active);
  },

  //限时抢购回调
  Active: function(res) {
    if (res.errorCode == 0) {
      app.setNavBarTitle(res.data.Active_Name + '--产品列表');

      res.data.imgurl = !res.data.imgurl || res.data.imgurl == '' ? '' : (res.data.imgurl.indexOf('http') == -1 || res.data.imgurl.indexOf('/uploadfiles/') > -1 ? app.globalData.init.front_url + res.data.imgurl : res.data.imgurl);
      if (this.data.ActArgs.Type_ID == 5) {
        var total_micro_second = parseInt(res.data.day * 24 * 60 * 60 * 1000) + parseInt(res.data.hour * 60 * 60 * 1000) + parseInt(res.data.minite * 60 * 1000) + parseInt(res.data.second * 1000);
        this.setData({
          day: res.data.day,
          active_img: res.data.imgurl,
          hour: res.data.hour,
          minite: res.data.minite,
          second: res.data.second,
          total_micro_second: total_micro_second,
        })
        countdown(this, this.data.total_micro_second);
      } else {
        this.setData({
          active_img: res.data.imgurl,
        })
      }
    } else {
      app.getError(res.errorCode, res.msg);
    }
  },

  // 分类切换
  navbarTap: function(e) {
    var id = e.currentTarget.dataset.idx;
    this.setData({
      CateProducts: [],
      currentTab: id,
      'getProArgs.Cate_ID': e.currentTarget.dataset.cateid,
      get_flag: true,
      'getProArgs.page': 1,
      toView: 'navbar_' + (id - 2)
    })
    this.getCateProducts();
  },

  //链接跳转
  navigator: function(e) {
    var url = e.currentTarget.dataset.url;
    if (url != '') {
      wx.navigateTo({
        url: url
      });
    }
  },
  //页面加载
  load: function() {
    wx.hideLoading();
    if (!app.globalData.shopConfig) {
      //获取商家配置信息
      app.getShopConfig(this.load);
      return false;
    }

    if (this.data.ActArgs.Type_ID > 0) {
      // 获取活动
      this.getActive();
    }

    // 获取分类列表
    this.getChildCate();

    // 获取产品列表
    this.getCateProducts();
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    if (options.cate_name) {
      wx.setNavigationBarTitle({
        title: options.cate_name
      })
    }

    if (options.Cate_ID) {
      this.setData({
        'getProArgs.Cate_ID': options.Cate_ID
      });
    } else if (options.cate_id) {
      this.setData({
        'getProArgs.Cate_ID': options.cate_id
      });
    } else if (options.flashsale_flag) { // 获取限时抢购
      this.setData({
        'getProArgs.flashsale_flag': options.flashsale_flag,
        'ActArgs.Type_ID': 5
      })
      wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#C91F00',
      })
    } else if (options.super_team) { // 获取超级团 
      this.setData({
        'getProArgs.super_team': options.super_team,
        'ActArgs.Type_ID': 8
      })
      wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#F7084B',
      })
    } else if (options.Is_hot) { // 获取热门推荐
      this.setData({
        'getProArgs.Is_Hot': 1,
        'ActArgs.Type_ID': 6
      })
      wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#FF7200',
      })
    } else if (options.special_offer) { // 获取9.9特价
      this.setData({
        'getProArgs.Is_Spe': 1,
        'ActArgs.Type_ID': 7
      })
      wx.setNavigationBarColor({
        frontColor: '#ffffff',
        backgroundColor: '#FFD811',
      })
    }

    //显示加载导航条
    wx.showNavigationBarLoading();

    this.load();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {
    //显示加载导航条
    wx.showNavigationBarLoading();
    //初始化数据 (防止数据重复)
    this.setData({
      navbar: [],
      clock: '',
      currentTab: 0,

      'getProArgs.page': 1,
      CateProducts: [],
      //请求状态
      get_flag: true,
      //加载更多动画
      loading: true
    });
    this.load();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {
    if (this.data.get_flag && !this.data.loading) {
      this.getCateProducts()
    }
  }
})